package com.jtny.nytb.datafilling.service;

import com.jtny.component.entity.PageParam;
import com.jtny.component.exception.ServiceException;
import com.jtny.nytb.datafilling.vo.CCERCertificateVO;
import com.jtny.nytb.datafilling.vo.GreenCertificateVO;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * 证书填报管理biz类
 *
 * @author 智慧能源中心-夏燕强
 * @version 1.0
 * @package com.jtny.nytb.energymonitor.datafilling.biz
 * @fileName CertificateBiz.java
 * @createTime 2023年09月22日 13:22
 * @Copyright© 2023 jtny
 * 江投能源技术研究院 版权所有
 */
public interface CertificateService {
    /**
     * 获取CCER证信息列表
     *
     * @return
     */
    Map<String, Object> queryPageCCER(PageParam param) throws ServiceException;

    /**
     * 保存CCER证
     *
     * @param ccerCertificateVO
     * @return
     */
    CCERCertificateVO saveCCER(CCERCertificateVO ccerCertificateVO) throws ServiceException;


    /**
     * 修改CCER证
     *
     * @param ccerCertificateVO
     */
    void updateCCER(CCERCertificateVO ccerCertificateVO) throws ServiceException;

    /**
     * 批量删除CCER证
     *
     * @param certificateIdList
     */
    void deleteCCER(List<Long> certificateIdList) throws ServiceException;

    /**
     * 批量使用CCER证
     *
     * @param certificateIdList
     * @return
     */
    void disablePageTemplate(List<Long> certificateIdList) throws ServiceException;

    /**
     * 获取绿证信息列表
     *
     * @return
     */
    Map<String, Object> queryPageGreenCertificate(PageParam param) throws ServiceException;

    /**
     * 保存绿证信息
     *
     * @param greenCertificateVO
     * @return
     */
    GreenCertificateVO saveGreenCertificate(GreenCertificateVO greenCertificateVO) throws ServiceException;

    /**
     * 更新绿证信息
     *
     * @param greenCertificateVO
     */
    void updateGreenCertificate(GreenCertificateVO greenCertificateVO) throws ServiceException;

    /**
     * 批量删除绿证
     *
     * @param certificateIds
     */
    void deleteGreenCertificate(List<Long> certificateIds) throws ServiceException;

    /**
     * 批量使用绿证
     *
     * @param certificateIds
     * @return
     */
    void enableGreenCertificate(List<Long> certificateIds) throws ServiceException;

    /**
     * 获取绿证列表
     *
     * @return
     */
    List<GreenCertificateVO> detailGreenList();

    /**
     * 获取绿证购买量
     *
     * @return
     */
    Map<String, BigDecimal> countGreen();

    /**
     * 获取CCER列表
     *
     * @return
     */
    List<CCERCertificateVO> detailCCERList();

    /**
     * 获取CCER购买量
     *
     * @return
     */
    Map<String, BigDecimal> countCCER();
}
